package cc.unitmesh.devins.ui.compose.icons

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PathFillType
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.graphics.StrokeJoin
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp

/**
 * Custom icons for AutoDev
 */
object CustomIcons {
    /**
     * AI Star icon (256x256)
     * A sparkle/star icon representing AI functionality
     */
    val AI: ImageVector by lazy {
        ImageVector.Builder(
            name = "AI",
            defaultWidth = 24.dp,
            defaultHeight = 24.dp,
            viewportWidth = 256f,
            viewportHeight = 256f
        ).apply {
            // Main star shape path
            path(
                fill = SolidColor(Color(0xFF6366F1)), // Indigo-500
                fillAlpha = 1f,
                stroke = null,
                strokeAlpha = 1f,
                strokeLineWidth = 1f,
                strokeLineCap = StrokeCap.Butt,
                strokeLineJoin = StrokeJoin.Miter,
                strokeLineMiter = 1f,
                pathFillType = PathFillType.NonZero
            ) {
                // Outer star path (simplified from the SVG)
                moveTo(230.05859f, 112.96289f)
                lineTo(166.24316f, 89.75684f)
                lineTo(143.03716f, 25.94141f)
                arcToRelative(16.001f, 16.001f, 0f, isMoreThanHalf = false, isPositiveArc = false, -30.07422f, 0f)
                lineTo(89.75684f, 89.75684f)
                lineTo(25.94141f, 112.96289f)
                arcToRelative(16.001f, 16.001f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, 30.07422f)
                lineTo(89.75684f, 166.24316f)
                lineTo(112.96289f, 230.05859f)
                arcToRelative(16.001f, 16.001f, 0f, isMoreThanHalf = false, isPositiveArc = false, 30.07422f, 0f)
                lineTo(166.24316f, 166.24316f)
                lineTo(230.05859f, 143.03711f)
                arcToRelative(16.001f, 16.001f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, -30.07422f)
                close()

                // Inner hollow part
                moveTo(160.77637f, 151.20605f)
                arcToRelative(15.95685f, 15.95685f, 0f, isMoreThanHalf = false, isPositiveArc = false, -9.57032f, 9.57032f)
                lineTo(127.99707f, 224.58399f)
                lineTo(104.794f, 160.77637f)
                arcToRelative(15.95872f, 15.95872f, 0f, isMoreThanHalf = false, isPositiveArc = false, -9.56836f, -9.57032f)
                lineTo(31.418f, 127.99707f)
                lineTo(95.22363f, 104.794f)
                arcToRelative(15.95872f, 15.95872f, 0f, isMoreThanHalf = false, isPositiveArc = false, 9.57032f, -9.56836f)
                lineTo(127.99707f, 31.41601f)
                lineTo(151.20019f, 95.22167f)
                arcToRelative(15.95872f, 15.95872f, 0f, isMoreThanHalf = false, isPositiveArc = false, 9.56836f, 9.57032f)
                lineTo(224.57781f, 127.99707f)
                close()
            }
        }.build()
    }

    /**
     * MCP (Model Context Protocol) icon (24x24)
     * Represents the Model Context Protocol integration
     */
    val MCP: ImageVector by lazy {
        ImageVector.Builder(
            name = "MCP",
            defaultWidth = 24.dp,
            defaultHeight = 24.dp,
            viewportWidth = 24f,
            viewportHeight = 24f
        ).apply {
            // First path
            path(
                fill = SolidColor(Color(0xFF000000)),
                fillAlpha = 1f,
                stroke = null,
                strokeAlpha = 1f,
                strokeLineWidth = 1f,
                strokeLineCap = StrokeCap.Butt,
                strokeLineJoin = StrokeJoin.Miter,
                strokeLineMiter = 1f,
                pathFillType = PathFillType.EvenOdd
            ) {
                moveTo(15.688f, 2.343f)
                arcToRelative(2.588f, 2.588f, 0f, isMoreThanHalf = false, isPositiveArc = false, -3.61f, 0f)
                lineToRelative(-9.626f, 9.44f)
                arcToRelative(0.863f, 0.863f, 0f, isMoreThanHalf = false, isPositiveArc = true, -1.203f, 0f)
                arcToRelative(0.823f, 0.823f, 0f, isMoreThanHalf = false, isPositiveArc = true, 0f, -1.18f)
                lineToRelative(9.626f, -9.44f)
                arcToRelative(4.313f, 4.313f, 0f, isMoreThanHalf = false, isPositiveArc = true, 6.016f, 0f)
                arcToRelative(4.116f, 4.116f, 0f, isMoreThanHalf = false, isPositiveArc = true, 1.204f, 3.54f)
                arcToRelative(4.3f, 4.3f, 0f, isMoreThanHalf = false, isPositiveArc = true, 3.609f, 1.18f)
                lineToRelative(0.05f, 0.05f)
                arcToRelative(4.115f, 4.115f, 0f, isMoreThanHalf = false, isPositiveArc = true, 0f, 5.9f)
                lineToRelative(-8.706f, 8.537f)
                arcToRelative(0.274f, 0.274f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, 0.393f)
                lineToRelative(1.788f, 1.754f)
                arcToRelative(0.823f, 0.823f, 0f, isMoreThanHalf = false, isPositiveArc = true, 0f, 1.18f)
                arcToRelative(0.863f, 0.863f, 0f, isMoreThanHalf = false, isPositiveArc = true, -1.203f, 0f)
                lineToRelative(-1.788f, -1.753f)
                arcToRelative(1.92f, 1.92f, 0f, isMoreThanHalf = false, isPositiveArc = true, 0f, -2.754f)
                lineToRelative(8.706f, -8.538f)
                arcToRelative(2.47f, 2.47f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, -3.54f)
                lineToRelative(-0.05f, -0.049f)
                arcToRelative(2.588f, 2.588f, 0f, isMoreThanHalf = false, isPositiveArc = false, -3.607f, -0.003f)
                lineToRelative(-7.172f, 7.034f)
                lineToRelative(-0.002f, 0.002f)
                lineToRelative(-0.098f, 0.097f)
                arcToRelative(0.863f, 0.863f, 0f, isMoreThanHalf = false, isPositiveArc = true, -1.204f, 0f)
                arcToRelative(0.823f, 0.823f, 0f, isMoreThanHalf = false, isPositiveArc = true, 0f, -1.18f)
                lineToRelative(7.273f, -7.133f)
                arcToRelative(2.47f, 2.47f, 0f, isMoreThanHalf = false, isPositiveArc = false, -0.003f, -3.537f)
                close()
            }

            // Second path
            path(
                fill = SolidColor(Color(0xFF000000)),
                fillAlpha = 1f,
                stroke = null,
                strokeAlpha = 1f,
                strokeLineWidth = 1f,
                strokeLineCap = StrokeCap.Butt,
                strokeLineJoin = StrokeJoin.Miter,
                strokeLineMiter = 1f,
                pathFillType = PathFillType.EvenOdd
            ) {
                moveTo(14.485f, 4.703f)
                arcToRelative(0.823f, 0.823f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, -1.18f)
                arcToRelative(0.863f, 0.863f, 0f, isMoreThanHalf = false, isPositiveArc = false, -1.204f, 0f)
                lineToRelative(-7.119f, 6.982f)
                arcToRelative(4.115f, 4.115f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, 5.9f)
                arcToRelative(4.314f, 4.314f, 0f, isMoreThanHalf = false, isPositiveArc = false, 6.016f, 0f)
                lineToRelative(7.12f, -6.982f)
                arcToRelative(0.823f, 0.823f, 0f, isMoreThanHalf = false, isPositiveArc = false, 0f, -1.18f)
                arcToRelative(0.863f, 0.863f, 0f, isMoreThanHalf = false, isPositiveArc = false, -1.204f, 0f)
                lineToRelative(-7.119f, 6.982f)
                arcToRelative(2.588f, 2.588f, 0f, isMoreThanHalf = false, isPositiveArc = true, -3.61f, 0f)
                arcToRelative(2.47f, 2.47f, 0f, isMoreThanHalf = false, isPositiveArc = true, 0f, -3.54f)
                lineToRelative(7.12f, -6.982f)
                close()
            }
        }.build()
    }
}
